#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include  <malloc.h>
#include <sched.h>
#include "include/jp2.h"


int main(){

struct t_info buff;
char param[10];
int pid;
int status=-1;
int pidhijo;
int fd;
int ioct;
int closerr;
int opinc;
int pid2;

printf("Juego de pruebas modulo 2(PROSO)\n");
fflush(stdout);
printf("Comienza el juego de pruebas del pid: ");
fflush(stdout);

system("mknod /dev/modulo2 c 253 0");

pid=getpid();
pidhijo=fork();
if(pidhijo==0){

	pidhijo=fork();
	if(pidhijo==0){
		sprintf(param,"insmod mymodule.ko pid=%d",pid);
		system(param);
		exit(0);
	}

wait(&status);
printf("%d\n",pid);
system("insmod mymodule2.ko");
}

else{
wait(&status);

//probamos tres writes correctos
printf("Hacemos 3 writes.\n");
write(1,"write:\n",7);
write(1,"write:\n",7);
write(1,"write:\n",7);

// Open incorrecto
printf("Hacemos 1 Open incorrecto.\n");
open("hola.txt",0);
// Close incorrecto
printf("Hacemos 1 Close incorrecto.\n");
close(4);

// 2 lseek incorrectos
printf("Hacemos 2 lseek incorrectos.\n\n");
lseek(4, 1, SEEK_SET);
lseek(4,1,0);

printf("-Abrir el dispositivo: ");
fd=open("/dev/modulo2",O_RDONLY);
if(fd<0){printf("Error abriendo el dispositivo\n");}
else{
printf("OK\n");

printf("-Activar monitorización: ");
ioct=ioctl(fd,4,20);
if(ioct<0){printf("Error activar monitorizacion %d\n", ioct);}
else{printf("OK\n");}

close(fd);


}
pidhijo=fork();
	if(pidhijo==0){
		system("rmmod mymodule2.ko");
		exit(0);
	}

wait(&status);
system("rm /dev/modulo2");
system("rmmod mymodule.ko");
}
}















     
